' ai_FunctionCreation.bas
#COMPILE EXE
#DIM ALL
FUNCTION PBMAIN () AS LONG
LOCAL strDate AS STRING
LOCAL strNewDate AS STRING
'
strDate = "10/08/2025"
'
strNewDate = Add30DaysToNextMonday(strDate)
'
CON.STDOUT "Original Date = " & strDate
CON.STDOUT "New Date = " & strNewDate
'
PRINT "Press any key to exit"
WAITKEY$
'
END FUNCTION
'
FUNCTION Add30DaysToNextMonday(BYVAL inputDate AS STRING) AS STRING
LOCAL pt AS IPOWERTIME
LOCAL inputYear AS LONG
LOCAL inputMonth AS LONG
LOCAL inputDay AS LONG
LOCAL dayOfWeek AS LONG
LOCAL daysToAdd AS LONG
LOCAL resultDate AS STRING
' Create PowerTime object
pt = CLASS "PowerTime"
' Parse the input date (dd/MM/yyyy format)
inputDay = VAL(LEFT$(inputDate, 2))
inputMonth = VAL(MID$(inputDate, 4, 2))
inputYear = VAL(RIGHT$(inputDate, 4))
' Set the initial date
pt.NewDate(inputYear, inputMonth, inputDay)
' Add 30 days
pt.AddDays(30)
' Get the day of week (0=Sunday, 1=Monday, ..., 6=Saturday)
dayOfWeek = pt.DayOfWeek()
' If it's not Monday (1), advance to next Monday
IF dayOfWeek <> 1 THEN
IF dayOfWeek = 0 THEN
' If Sunday, add 1 day to get to Monday
daysToAdd = 1
ELSE
' If Tuesday-Saturday, calculate days to next Monday
daysToAdd = 8 - dayOfWeek
END IF
pt.AddDays(daysToAdd)
END IF
' Format the result back to dd/MM/yyyy
resultDate = FORMAT$(pt.Day(), "00") + "/" + _
FORMAT$(pt.Month(), "00") + "/" + _
FORMAT$(pt.Year(), "0000")
' Clean up object
pt = NOTHING
FUNCTION = resultDate
END FUNCTION